<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    *{
      margin: 0;
      padding: 0;
    }
    div{
      width: 200px;
      height: 200px;
      background: #34c;
      position: absolute;
      left: 0;
      top:0;
    }
  </style>
</head>
<body>
  <div></div>

  <script>
    //获取 div 元素对象
    let div = document.querySelector('div');
    //绑定事件 鼠标移动事件 window 窗口意思, window 是一个全局对象
    window.onmousemove = function(e){
      //获取鼠标移动之后的位置
      let x = e.clientX;
      let y = e.clientY;
      //获取 div 的宽度
      let w = div.offsetWidth / 2;
      //获取 div 的高度
      let h = div.offsetHeight / 2;
      //计算移动鼠标之后, div 的 left 值
      let newLeft = x - w;
      //判断
      if(newLeft<0){
        newLeft = 0
      }
      //计算最大的 left 值
      let maxLeft = window.innerWidth - div.offsetWidth;
      //判断右侧是否越界
      if(newLeft > maxLeft){
        newLeft = maxLeft;
      }
      //计算移动鼠标之后, 新的 top 值
      let newTop = y - h;
      //判断顶部是否越界
      if(newTop < 0){
        newTop = 0;
      }
      //计算最大的 left 值
      let maxTop = window.innerHeight - div.offsetHeight;
      //判断右侧是否越界
      if(newTop > maxTop){
        newTop = maxTop;
      }
      //设置 div 的位置
      div.style.left = newLeft + 'px';
      div.style.top = newTop + 'px';
    }

  </script>
</body>
</html>